DynamoDB তে pagination এবং result limit সেট করা একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, বিশেষত যখন আপনার টেবিলটি খুব বড় হয় এবং ডেটার পরিমাণ বেশি থাকে। DynamoDB তে Query এবং Scan অপারেশনে pagination ব্যবহার করে আপনি একাধিক পৃষ্ঠার ফলাফল পেতে পারেন, এবং result limit ব্যবহার করে আপনি কতগুলি রেকর্ড ফেরত পাবেন তা সীমাবদ্ধ করতে পারেন।
Pagination ব্যবহার করার মাধ্যমে আপনি একটি বড় ডেটাসেটের ফলাফলকে ছোট ছোট অংশে ভাগ করতে পারেন। এটি LastEvaluatedKey
ব্যবহার করে করা হয়।
Query অপারেশনটি যখন অনেক রেকর্ড ফেরত দেয়, তখন পেজিনেশন ব্যবহারের মাধ্যমে আপনি একাধিক পৃষ্ঠার ফলাফল পাবেন। DynamoDB স্বয়ংক্রিয়ভাবে শুধুমাত্র একটি নির্দিষ্ট পরিমাণের রেকর্ড ফিরিয়ে দেয় (যেটি Limit
দ্বারা নির্ধারিত), এবং পরবর্তী পেজ পাওয়ার জন্য LastEvaluatedKey ব্যবহার করা হয়।
import boto3
# DynamoDB ক্লায়েন্ট তৈরি
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('YourTableName')
# প্রথম পেজে Query অপারেশন
response = table.query(
KeyConditionExpression=Key('PrimaryKey').eq('value1'),
Limit=10 # প্রতি পৃষ্ঠায় ১০টি রেকর্ড ফিরিয়ে দিবে
)
# প্রথম পেজের রেকর্ড প্রিন্ট করা
for item in response['Items']:
print(item)
# পরবর্তী পেজ পেতে LastEvaluatedKey ব্যবহার করা
while 'LastEvaluatedKey' in response:
response = table.query(
KeyConditionExpression=Key('PrimaryKey').eq('value1'),
Limit=10,
ExclusiveStartKey=response['LastEvaluatedKey']
)
# পরবর্তী পৃষ্ঠার রেকর্ড প্রিন্ট করা
for item in response['Items']:
print(item)
Limit
: প্রতি পৃষ্ঠায় কতটি রেকর্ড ফেরত দিবে তা নির্ধারণ করে।ExclusiveStartKey
: পরবর্তী পেজের জন্য LastEvaluatedKey ব্যবহার করতে হবে।Scan অপারেশনেও pagination ব্যবহার করা হয়, তবে এটি Query এর তুলনায় কম পারফরম্যান্স সহ, কারণ Scan পুরো টেবিল স্ক্যান করে।
import boto3
# DynamoDB ক্লায়েন্ট তৈরি
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('YourTableName')
# প্রথম পেজে Scan অপারেশন
response = table.scan(
Limit=10 # প্রতি পৃষ্ঠায় ১০টি রেকর্ড ফিরিয়ে দিবে
)
# প্রথম পেজের রেকর্ড প্রিন্ট করা
for item in response['Items']:
print(item)
# পরবর্তী পেজ পেতে LastEvaluatedKey ব্যবহার করা
while 'LastEvaluatedKey' in response:
response = table.scan(
Limit=10,
ExclusiveStartKey=response['LastEvaluatedKey']
)
# পরবর্তী পৃষ্ঠার রেকর্ড প্রিন্ট করা
for item in response['Items']:
print(item)
Limit
: স্ক্যান অপারেশনের জন্য প্রতি পৃষ্ঠায় কতটি রেকর্ড ফেরত দিবে তা নির্ধারণ করা হয়।ExclusiveStartKey
: পরবর্তী পৃষ্ঠার জন্য LastEvaluatedKey ব্যবহার করতে হবে।Result Limit এর মাধ্যমে আপনি Query বা Scan অপারেশনে ফেরত আসা ডেটার সংখ্যা সীমিত করতে পারেন। এটি Limit
প্যারামিটার দিয়ে নির্ধারণ করা হয়।
যখন আপনার টেবিল বড় হয়ে যায় এবং আপনি একাধিক আইটেম এক সাথে রিটার্ন করতে চান না, তখন Limit প্যারামিটার ব্যবহার করে আপনি একটি নির্দিষ্ট পরিমাণ আইটেম রিটার্ন করতে পারেন।
import boto3
from boto3.dynamodb.conditions import Key
# DynamoDB ক্লায়েন্ট তৈরি
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('YourTableName')
# Query অপারেশনে Result Limit সেট করা
response = table.query(
KeyConditionExpression=Key('PrimaryKey').eq('value1'),
Limit=5 # প্রতি পৃষ্ঠায় ৫টি রেকর্ড রিটার্ন করবে
)
# রেকর্ড প্রিন্ট করা
for item in response['Items']:
print(item)
এই দুটি ফিচার ব্যবহার করে আপনি DynamoDB তে ডেটা পড়ার কার্যকারিতা আরও উন্নত করতে পারবেন এবং বড় ডেটাসেটগুলো সহজে ম্যানেজ করতে পারবেন।
common.read_more